<template>
  <div class="ValidCode disabled-select" style="width: 100%; height: 100%" @click="refreshCode">
    <span v-for="(item, index) in codeList" :key="index" :style="getStyle(item)">{{item.code}}</span>
  </div>
</template>

<script>
export default {
  name: 'validCode',
  data () {
    return {
      length: 4,
      codeList: []
    }
  },
  mounted () {
    this.createdCode()
  },
  methods: {
    refreshCode () {
      this.createdCode()
    },
    createdCode () {
      let len = this.length,
          codeList = [],
          chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789',
          charsLen = chars.length
      // 生成
      for (let i = 0; i < len; i++) {
        let rgb = [Math.round(Math.random() * 220), Math.round(Math.random() * 240), Math.round(Math.random() * 200)]
        codeList.push({
          code: chars.charAt(Math.floor(Math.random() * charsLen)),
          color: `rgb(${rgb})`,
          padding: `${[Math.floor(Math.random() * 10)]}px`,
          transform: `rotate(${Math.floor(Math.random() * 90) - Math.floor(Math.random() * 90)}deg)`
        })
      }
      // 指向
      this.codeList = codeList
      // 将当前数据派发出去
      this.$emit('update:value', codeList.map(item => item.code).join(''))
    },
    getStyle (data) {
      return `color: ${data.color}; font-size: ${data.fontSize}; padding: ${data.padding}; transform: ${data.transform}`
    }
  }
}
</script>

<style>
.ValidCode{
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}
.ValidCode span {
  display: inline-block;
  font-size: 18px;
}
</style>
<!--<template>-->
<!--  <div class="captcha-container" @click="generateCaptcha">-->
<!--    <div v-for="(char, index) in codeList" :key="index" :style="getStyle(char)">-->
<!--      {{ char.code }}-->
<!--    </div>-->
<!--  </div>-->
<!--</template>-->

<!--<script>-->
<!--export default {-->
<!--  data() {-->
<!--    return {-->
<!--      codeList: [],-->
<!--      length: 4// 验证码的长度-->
<!--    };-->
<!--  },-->
<!--  methods: {-->
<!--    generateCaptcha() {-->
<!--      this.createdCode();-->
<!--    },-->
<!--    createdCode() {-->
<!--      let chars = 'abcdefghijklmnopqrstuvwxyz0123456789',-->
<!--          charsLength = chars.length;-->
<!--      this.codeList = []; // 使用 this.codeList 来确保你访问的是组件的响应式数据-->
<!--      for (let i = 0; i < this.length; i++) {-->
<!--        let rgb = [Math.round(Math.random() * 256), Math.round(Math.random() * 256), Math.round(Math.random() * 256)];-->
<!--        this.codeList.push({-->
<!--          code: chars.charAt(Math.floor(Math.random() * charsLength)),-->
<!--          color: `rgb(${rgb.join(',')})`,-->
<!--          padding: `${Math.floor(Math.random() * 10) + 1}px`,-->
<!--          transform: `rotate(${Math.floor(Math.random() * 180) - 90}deg)`-->
<!--        });-->
<!--      }-->
<!--      // 将验证码字符串传给父组件-->
<!--      this.codeList = code-->
<!--      this.$emit('update:value', codeList.map(item => item.code).join('')); // 触发父组件的 input 事件，将验证码字符串传给父组件-->
<!--    },-->

<!--    getStyle(data) {-->
<!--      return `color:${data.color};padding:${data.padding};transform:${data.transform};display: inline-block;`;-->
<!--    }-->
<!--  },-->
<!--  mounted() {-->
<!--    this.generateCaptcha(); // 组件挂载时生成初始验证码-->
<!--  }-->
<!--};-->
<!--</script>-->

<!--<style scoped>-->
<!--.captcha-container {-->
<!--  display: flex;-->
<!--  align-items: center;-->
<!--  justify-content: center;-->
<!--  gap: 5px; /* 控制字符之间的间距 */-->
<!--  font-size: 24px; /* 设置验证码字符的基础字体大小 */-->
<!--  font-weight: bold; /* 使字符看起来更粗一些 */-->
<!--  padding: 10px; /* 给验证码容器添加一些内边距 */-->
<!--  background-color: #f9f9f9; /* 可选：设置验证码容器的背景颜色 */-->
<!--}-->

<!--.captcha-container > div {-->
<!--  display: inline-block; /* 确保每个字符都是行内块级元素，以便应用padding和margin */-->
<!--  text-align: center; /* 使字符在其容器中居中显示 */-->
<!--  line-height: 1; /* 控制字符的垂直间距，使字符看起来更紧凑 */-->
<!--  /* 这里可以添加更多的样式，如阴影、过渡效果等 */-->
<!--}-->

<!--.captcha-container button {-->
<!--  margin-left: 10px; /* 控制按钮与验证码字符之间的间距 */-->
<!--  padding: 8px 16px; /* 设置按钮的内边距 */-->
<!--  font-size: 4px; /* 设置按钮的字体大小 */-->
<!--  cursor: pointer; /* 鼠标悬停在按钮上时显示指针形状 */-->
<!--  border: none; /* 移除按钮的默认边框 */-->
<!--  border-radius: 4px; /* 给按钮添加圆角 */-->
<!--  background-color: #007bff; /* 设置按钮的背景颜色 */-->
<!--  color: white; /* 设置按钮的字体颜色 */-->
<!--  /* 这里可以添加更多的按钮样式，如悬停效果、过渡效果等 */-->

<!--}-->
<!--</style>-->